home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Pascal Super Library
/
Pascal Super Library (CW International)(1997).bin
/
MATH
/
NRPAS13
/
SHELL.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1991-04-29
|
724b
|
32 lines
PROCEDURE shell(n: integer; VAR arr: glnarray);
(* Programs using routine SHELL must define the type
TYPE
glnarray = ARRAY [1..np] OF real;
in the main routine, with np >= n. *)
LABEL 3;
CONST
aln2i=1.442695022;
tiny=1.0e-5;
VAR
nn,m,lognb2,l,k,j,i: integer;
t: real;
BEGIN
lognb2 := trunc(ln(n)*aln2i+tiny);
m := n;
FOR nn := 1 TO lognb2 DO BEGIN
m := m DIV 2;
k := n-m;
FOR j := 1 TO k DO BEGIN
i := j;
3: l := i+m;
IF (arr[l] < arr[i]) THEN BEGIN
t := arr[i];
arr[i] := arr[l];
arr[l] := t;
i := i-m;
IF (i >= 1) THEN GOTO 3
END
END
END
END;